package DAO;

import factory.Conexao;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import model.Usuario;

public class UsuarioDAO implements Serializable {
    
    private UsuarioDAO()
    {
        
    }
    
    public static boolean insert(Usuario usuario) {
        String sql;
        sql  = "INSERT INTO USUARIO (USUARIO,";
        sql += "                     NOMEUSUARIO,";
        sql += "                     SENHA)";
        sql += "             VALUES (?,";
        sql += "                     ?,";
        sql += "                     ?)";

        Connection conn;
        PreparedStatement stm;
        try {
            conn = Conexao.getConnection();
            stm = conn.prepareStatement(sql);
            stm.setString(1, usuario.getUsuario());
            stm.setString(2, usuario.getNomeUsuario());
            stm.setString(3, usuario.getSenha());

            stm.execute();
            stm.close();
            conn.close();
            return true;
        } catch (SQLException ex) {
            return false;
        }
    }

    public static boolean update(Usuario usuario) {
        String sql;
        sql  = "UPDATE USUARIO";
        sql += "   SET NOMEUSUARIO = ?,";
        sql += "       SENHA = ?";
        sql += " WHERE USUARIO = ?";

        Connection conn;
        PreparedStatement stm;
        try {
            conn = Conexao.getConnection();
            stm = conn.prepareStatement(sql);
            stm.setString(1, usuario.getNomeUsuario());
            stm.setString(2, usuario.getSenha());
            stm.setString(3, usuario.getUsuario());

            stm.execute();
            stm.close();
            conn.close();
            return true;
        } catch (SQLException ex) {
            return false;
        }
    }

    public static boolean delete(Usuario usuario) {
        String sql;
        sql  = "DELETE";
        sql += "  FROM USUARIO";
        sql += " WHERE USUARIO = ?";

        Connection conn;
        PreparedStatement stm;
        try {
            conn = Conexao.getConnection();
            stm = conn.prepareStatement(sql);
            stm.setString(1, usuario.getUsuario());
            stm.execute();
            stm.close();
            conn.close();
            return true;
        } catch (SQLException ex) {
            return false;
        }
    }

    public static ArrayList<Usuario> selectByUsuarioSenha(String usuarioFiltro, String senhaFiltro) {
        String sql;
        sql  = "SELECT USU.USUARIO,";
        sql += "       USU.NOMEUSUARIO,";
        sql += "       USU.SENHA";
        sql += "  FROM USUARIO USU";
        sql += " WHERE USU.USUARIO = ?";
        sql += "   AND USU.SENHA = ?";

        Connection conn;
        PreparedStatement stm;
        ResultSet rs;
        Usuario usuario;
        ArrayList<Usuario> listUsuario = new ArrayList<Usuario>();
        try {
            conn = Conexao.getConnection();
            stm = conn.prepareStatement(sql);
            stm.setString(1, usuarioFiltro);
            stm.setString(2, senhaFiltro);
            rs = stm.executeQuery();
            while (rs.next()) {
                usuario = new Usuario();
                
                usuario.setUsuario(rs.getString("USUARIO"));
                usuario.setNomeUsuario(rs.getString("NOMEUSUARIO"));
                usuario.setSenha(rs.getString("SENHA"));
                
                listUsuario.add(usuario);
            }
            stm.close();
            conn.close();
            return listUsuario;
        } catch (SQLException ex) {
            return null;
        }
    }
}
